package com.faya.green.dao.authority;

import com.faya.green.model.AuthorityRole;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author ：LX
 * 创建时间： 2018/10/26. 14:49
 * 地点：广州
 * 目的: 权限和角色对应关系表
 * 备注说明：
 */
public interface AuthorityRoleDao {

    /**
     * 新增 权限和角色对应关系
     * @param authorityRole 权限和角色对应关系
     */
    void addAuthorityRole(AuthorityRole authorityRole);

    /**
     * 更新 权限和角色对应关系
     * @param authorityRole 权限和角色对应关系
     */
    void updateAuthorityRole(AuthorityRole authorityRole);

    /**
     * 根据 权限和角色对应关系id 查询 权限和角色对应关系
     * @param id 权限和角色对应关系ID
     * @return
     */
    AuthorityRole getAuthorityRoleById(String id);

    /**
     * 根据 权限id 查询全部的 对应关系(过滤了逻辑删除的)
     * @param authorityId 权限ID
     * @return
     */
    @Select("select * from AuthorityRole where status in ('0','1') and authorityId = #{authorityId,jdbcType=VARCHAR} ")
    List<AuthorityRole> getAuthorityRoleByAuthorityId(String authorityId);

    /**
     * 根据 角色ID 查询全部的 对应关系
     * @param roleId 角色id
     * @return
     */
    @Select("select * from AuthorityRole where status in ('0','1') and roleId = #{roleId,jdbcType=VARCHAR} ")
    List<AuthorityRole> getAuthorityRoleByRoleId(String roleId);

    /**
     * 根据角色ID 删除 权限和角色 （物理删除）
     * @param roleId 角色ID
     */
    @Delete("delete from AuthorityRole where roleId = #{roleId,jdbcType=VARCHAR} ")
    void delAuthorityRoleByRoleId(String roleId);

    /**
     * 根据ID 删除 权限和角色 （物理删除）
     * @param id 主键ID
     */
    @Delete("delete from AuthorityRole where id = #{id,jdbcType=VARCHAR} ")
    void delAuthorityRoleById(String id);
}
